home *** CD-ROM | disk | FTP | other *** search
/ Aminet 15 / Aminet 15 - Nov 1996.iso / Aminet / text / hyper / hsc_source.lha / source / ugly / infile.h < prev    next >
C/C++ Source or Header  |  1996-07-30  |  4KB  |  133 lines

  1. /*
  2.  * ugly/infile.h
  3.  *
  4.  * ugly input file handling functions, header file
  5.  *
  6.  */
  7.  
  8. #ifndef UGLY_INFILE_H           /* avoid include twice */
  9. #define UGLY_INFILE_H
  10.  
  11. /*
  12.  * includes
  13.  */
  14. #include "utypes.h"
  15. #include "expstr.h"
  16. #include "dllist.h"
  17.  
  18. /* reasonable value for buffer-step-size */
  19. #define IF_BUFFER_VALUE 128
  20.  
  21. /*
  22.  * ugly input file structure (PRIVATE)
  23.  */
  24. typedef struct infile
  25. {
  26.     STRPTR filename;            /* file name */
  27.     FILE *infile;               /* file opened if fopen() */
  28.     EXPSTR *lnbuf;              /* buffer for inputline */
  29.     EXPSTR *wordbuf;            /* word buffer */
  30.     EXPSTR *wspcbuf;            /* word buffer (white spaces) */
  31.  
  32.     ULONG filepos;              /* file position */
  33.     ULONG pos_y;                /* line number in file */
  34.     ULONG pos_x;                /* pos. in current line */
  35.     ULONG wpos_y;               /* line number in file of current word */
  36.     ULONG wpos_x;               /* pos. in current line of current word */
  37.     ULONG base_x;               /* base position */
  38.     ULONG base_y;
  39.  
  40.     DLLIST *pos_list;           /* list of pending pos-request */
  41.     ULONG pos_count;            /* number of entries in poslist */
  42.  
  43.       BOOL(*is_ws) (int ch);    /* ptr to func that checks if a char */
  44.     /* is a white-space */
  45.       BOOL(*is_nc) (int ch);    /* deto, but for "normal char" */
  46.  
  47.     BOOL eof_reached;           /* flag: TRUE, if end of file */
  48.     BOOL out_of_mem;            /* flag: TRUE, if ran out of memory */
  49.     BOOL skipped_ws;            /* flag: TRUE, if last infgetw */
  50.     /*       skipped a white-space */
  51.     BOOL closed;                /* flag: TRUE, if closed, but pending */
  52.     /*       fpos-requested exist */
  53. }
  54. INFILE;
  55.  
  56. typedef struct infile_pos
  57. {
  58.     INFILE *inpf;
  59.     STRPTR fname;               /* filename */
  60.     ULONG x;                    /* column */
  61.     ULONG y;                    /* line */
  62.     ULONG fpos;                 /* file position */
  63. }
  64. INFILEPOS;
  65.  
  66. /*
  67.  * global macros
  68.  */
  69. #define infclose( f ) ((f) ? (infclose1( f ), f=NULL) : (NULL))
  70.  
  71. /*
  72.  * global vars
  73.  */
  74. extern STRPTR FNAME_STDIN;
  75.  
  76. /*
  77.  *
  78.  * extern function prototypes & global vars
  79.  *
  80.  */
  81. #ifndef NOEXTERN_UGLY_INFILE_H
  82.  
  83. extern INFILE *infopen(CONSTRPTR name, size_t step_size);
  84. extern INFILE *infopen_str(CONSTRPTR fname, CONSTRPTR s, size_t step_size);
  85. extern int infclose1(INFILE * inpf);    /* PRIVATE; use infclose() */
  86.  
  87. extern int infgetc(INFILE * inpf);
  88. extern STRPTR infgetw(INFILE * inpf);
  89. extern STRPTR infgetall(INFILE * inpf);
  90.  
  91. extern STRPTR infgetcws(INFILE * inpf);
  92. extern STRPTR infgetcw(INFILE * inpf);
  93.  
  94. extern int inungetc(int ch, INFILE * inpf);
  95. extern size_t inungets(STRPTR s, INFILE * inpf);
  96. extern size_t inungetcwws(INFILE * inpf);
  97. extern size_t inungetcw(INFILE * inpf);
  98.  
  99. extern ULONG infget_x(INFILE * inpf);
  100. extern ULONG infget_y(INFILE * inpf);
  101. extern ULONG infget_wx(INFILE * inpf);
  102. extern ULONG infget_wy(INFILE * inpf);
  103. extern STRPTR infget_fname(INFILE * inpf);
  104. extern BOOL infget_skws(INFILE * inpf);
  105.  
  106. extern BOOL inf_isws(char ch, INFILE * inpf);
  107. extern size_t infskip_ws(INFILE * inpf);
  108.  
  109. extern int infeof(INFILE * inpf);
  110. extern int infgotoeol(INFILE * inpf);
  111.  
  112. extern VOID del_infilepos(INFILEPOS * pos);
  113. extern INFILEPOS *new_infilepos(INFILE * inpfile);
  114. extern INFILEPOS *new_winfilepos(INFILE * inpfile);
  115. extern STRPTR ifp_get_fname(INFILEPOS * pos);
  116. extern ULONG ifp_get_x(INFILEPOS * pos);
  117. extern ULONG ifp_get_y(INFILEPOS * pos);
  118. extern BOOL set_infilepos(INFILE * inpf, INFILEPOS * pos);
  119. extern BOOL set_infile_base(INFILE * inpf, INFILEPOS * pos);
  120.  
  121. #if 0
  122. extern void inflog_enable(INFILE * inpf);
  123. extern void inflog_disable(INFILE * inpf);
  124. extern BOOL inflog_clear(INFILE * inpf);
  125. extern BOOL inflog_app(INFILE * inpf, STRPTR s);
  126. extern STRPTR infget_log(INFILE * inpf);
  127. #endif
  128.  
  129. #endif /* NOEXTERN_UGLY_INFILE_H */
  130.  
  131. #endif /* UGLY_INFILE_H */
  132.  
  133.